/*
 * author: amir
 * info: 验证表单的函数
 */

// 导出验证用户名的函数
const unameExg = /^[a-zA-Z0-9_-]{4,8}$/
export var checkUName = (rule, value, callback) => {
  // trim() 字符串去掉前后空格的方法
  if (!value) {
    return callback(new Error('用户不能为空'))
  } else if (!unameExg.test(value)) {
    return callback(new Error('用户名只能是4-16位字母数字下划线'))
  } else {
    callback()
  }
}

// 导出验证密码的函数
const pwdExg = /(?=.*([a-zA-Z].*))(?=.*[0-9].*)[a-zA-Z0-9-*/+.~!@#$%^&*()]{6,10}$/
export var validatePass = (rule, value, callback) => {
  if (value === '') {
    callback(new Error('请输入密码'))
  } else if (!pwdExg.test(value)) {
    callback(new Error('至少包含数字跟字母，可以有字符'))
  } else {
    callback()
  }
}

// 导出验证新密码的函数
export function checkPass1(o, str) {
  return function(rule, value, callback) {
    if (value === '') {
      callback(new Error('请输入密码'))
    } else if (!pwdExg.test(value)) {
      callback(new Error('至少包含数字跟字母，可以有字符'))
    } else {
      // 这里代表新密码验证是通过的
      if (o.ruleForm[str] !== '') {
        o.$refs.ruleForm.validateField(str)
      }
      callback()
    }
  }
}

// 导出验证两次密码一致的函数
export function checkPass2(o, str) {
  return function(rule, value, callback) {
    if (value === '') {
      callback(new Error('请再次输入密码'))
    } else if (value !== o.ruleForm[str]) {
      callback(new Error('两次输入密码不一致!'))
    } else {
      callback()
    }
  }
}
